Video Coming Soon
• A scalable Unity/C# simulation framework that models 10,000 synthetic players with fixed real-skill distributions, realistic multiplayer dynamics (probabilistic duels, assists, clutches), and player behaviors such as smurfing.
• It enables reproducible, large-scale benchmarking of multiple matchmaking systems.
• I have implemented the entirety of the project, using Unity Engine, C#, and Python for data analysis and visualisation.
• This project was my MSc capstone, driven by the absence of reliable benchmarking tools for matchmaking algorithms.
• The project implements and assesses multiple matchmaking algorithms (Elo, Glicko, TrueSkill, a custom SmartMatch System) in a repeatable manner, providing data-driven insights into their trade-offs.
• Implemented synthetic player behaviour, realistic match simulation, and the matchmaking algorithms (Elo, Glicko, TrueSkill, and a novel SmartMatch).
• Conducted comparative analyses on fairness, rating convergence, smurf detection, and player experience; produced data-driven insights via Python.
• Built visualisation and reporting tools, including graphical dashboards and statistical summaries.
• Oversaw UI/UX development for simulation controls and data display.
• Engineered a robust, extensible simulation system for consistently replicating different matchmaking algorithms under identical conditions.
double p1WinProb = 1.0 / (1.0 + Math.Pow(10, (p2.playerData.RealSkill - p1.playerData.RealSkill) / 400.0));
bool p1Wins = rng.NextDouble() < p1WinProb;
if (p1Wins)
{
p1.playerData.Kills++;
p2.playerData.Deaths++;
aliveTeam2.Remove(p2);
}
else
{
p2.playerData.Kills++;
p1.playerData.Deaths++;
aliveTeam1.Remove(p1);
}
Full Method (GitHub)
This snippet shows how each duel outcome is probabilistically determined based on player skill ratings. Over many rounds, this produces realistic match results and allows for post-game Elo adjustments.